"""
通知相关模型
"""

from jlpay.model.base import BaseResponse


class NotifyDto:
    """通知数据传输对象"""
    
    def __init__(self, notify_data: dict):
        """
        初始化通知数据传输对象
        
        Args:
            notify_data: 通知数据字典
        """
        self.org_code = notify_data.get('org_code')
        self.mch_id = notify_data.get('mch_id')
        self.ledger_module = notify_data.get('ledger_module')
        self.status = notify_data.get('status')
        self.reason = notify_data.get('reason')
        
        # 可以根据需要添加更多字段
        # 例如：时间戳、签名信息等
        self.timestamp = notify_data.get('timestamp')
        self.sign = notify_data.get('sign')
        self.nonce = notify_data.get('nonce')
    
    def is_success(self) -> bool:
        """
        判断通知是否成功
        
        Returns:
            如果状态为 SUCCESS，返回 True，否则返回 False
        """
        return self.status == "SUCCESS"
    
    def is_failed(self) -> bool:
        """
        判断通知是否失败
        
        Returns:
            如果状态为 FAILED，返回 True，否则返回 False
        """
        return self.status == "FAILED"
    
    def get_status_description(self) -> str:
        """
        获取状态描述
        
        Returns:
            状态描述字符串
        """
        if self.is_success():
            return "成功"
        elif self.is_failed():
            return "失败"
        else:
            return f"未知状态: {self.status}"
    
    def __str__(self):
        """字符串表示"""
        return f"NotifyDto(org_code={self.org_code}, mch_id={self.mch_id}, status={self.status}, reason={self.reason})"
    
    def __repr__(self):
        """详细字符串表示"""
        return self.__str__() 